4章 統計入門
作成日: 2024/8/2
最終更新日: 2024/8/14
#『入門_監視』読書メモ
「ちょっと統計をいじる」だけで魔法のように何かが出てくるわけじゃないけど、統計の基本はわかりやすく、監視の仕事に非常に役立つ。
4.1 システム運用における統計を学ぶ前に
システムは予想しない、けれども問題があるとは言えない動きをすることがある
e.g.
閾値を1回だけ越えた場合
閾値が4 で、3.9 → 4.1 をいったりきたり
...
このような場合、アラートがうるさくなる
Nagios やその他の類似ツールには、この手の問題に対応するためにノイズを減らすフラッピング (flapping detection) という仕組みが備えられている
一定時間内に問題がある状態とない状態を行ったり来たりすることを監視ツールが検知して、チェックを止める仕組み
(著者の意見では) フラッピングはよくないアラートを隠すだけのもの。ではどうしたらよいか (をこの章で書いている)。
4.2 計算が救いの手を差し伸べる
モダンな監視スタックの重要な原則の1つが、監視サービスが送ったメトリクスを捨てないこと。
今は、時系列データベースに保存することが普通になっている
データを保存しておくことで、統計を使った問題の発見に役立てられる可能性が広がった
時系列データベースに保存された値に対して、チェックを行える
最後に得られた値以外にもチェックを走らせられる
複数の値にチェックをかけることもできる
過去に対する多くの情報を得ずに、未来を洞察したり推測したりすることはできない
4.3 統計は魔法ではない
「ちょっと統計をいじる」だけで、何か大きな洞察ができるということはありません
(この章では、) ある程度の基本を教え、誤解を解き、次に何を学べば良いのかわかるようにするつもり
4.4 mean と average
mean (一般的には avarage、専門的には算術平均 (arithmetic mean))
集合内の個別の値を確認することなく、その集合がどのようなものかを表すのに便利な値
集合内のすべてを足し、その数を集合の要素数で割る
移動平均 (moving avarage)
時系列データベースにおける平均のよくある使い方の1つ
集合のすべてを使って平均を算出する代わりに、最近取得したデータポイント群で平均を計算する
このプロセスの副産物として、スパイクの多いグラフを平滑化する効果がある
このプロセスは、時系列データベースにおいてデータを間引きしたり、時系列グラフツールでメトリクスの巨大な集合を表示する時に使われる
→ Mackerelで表示期間を広げるとグラフがなだらかになるアレだな
「平滑化したグラフ」という (山と谷がなくなる)
利点: データセットの極端な値が隠されることで、識別しやすいパターンを持ったデータセットを作ることができる
欠点: 重要かもしれないデータポイントも失ってしまう
平滑化を行うと、正確さを犠牲にした上で、見え方は向上する
バランスをとって適切な度合いの平滑化を行う必要がある
4.5 中央値
中央値 (median) は、平均が対象を正確に表さない時に便利
中央値とは本質的にはデータセットの「真ん中」のこと
一方向に大きな偏りのあるデータセットを扱う時には、平均よりも中央値のほうがデータセットの特性をよく表す場合がある
データセットを昇順に並べ替えて、それから公式 (n + 1) / 2 (n はデータセットのエントリ数) を使って真ん中の値を見つける
奇数の場合は真ん中の値が中央値
偶数の場合は、真ん中の値2つが平均化され、元のデータセットに存在しない値が中央値になることがある
4.6 周期性
データの周期性 (seasonality) とは、データポイントがパターンを繰り返すこと
(常日頃データの周期性の観察して、) Webサーバーは平日におよそ秒間100リクエストをうけつけていることを知っていれば、その数が半分になったり2倍になったりしたら何かしらの調査が必要なことが発生しているのが分かる。
今のデータポイントと前の周期のデータポイントを比較できる
周期性の高い負荷に対しては、将来どのようになるのかが推測できる
なお、どんな負荷も周期性があるとは限らない
4.7 分位数
分位数 (quantile) は、データセットのある点を表す統計的手法
第2四分位数 (しぶんいすう)といえば、データの真ん中の点 (つまり中央値)をいう
最もよく使われる分位数はパーセンタイル
パーセンテージ (0から100) でデータセット内の点を表現する方法
帯域幅に対する課金やレイテンシーのレポートによく使われる
レイテンシーの場合、外れ値を無視して大部分のユーザーに対するサービス品質がどうだったのかについての有益な情報を得られる
データセットを昇順に並べ替え、上位n パーセントの値を取り除き、残った内で最大の値がnパーセンタイルの値
※これは雑な定義だそうで、より完全な表現は https://cacm.acm.org/practice/statistics-for-engineers/ 参照のこと
→ fumi23参考: 正しい指標を選ぶ: パーセンタイルと平均値のガイド
パーセンタイルを使うと、値の多くがどうだったかという情報が得られるが、ある程度のデータポイントを捨てていることを忘れないでください
レイテンシーを判断するのにパーセンタイルを使う時には、レイテンシーの最大値も計算し、ユーザーに対する最悪のシナリオについても確認しましょう
4.8 標準偏差
標準偏差 (standard deviation) は、平均からどの程度離れているか、どの程度近いかを表現する方法
どんなデータセットに対しても標準偏差を計算できるが、正規分布している (normally distributed)データセットに対してしか、期待するような結果は出ない
分布: データセットのモデルを表現する統計用語
正規分布: きれいなグラフのようにみえる
非正規分布: ばらつき (skew) がある
複数の頂点があったり、前に伸びたり後ろに伸びたり線形になる
標準偏差の便利な点: 一定の偏差内のデータ量が予測できる
みなさんがこの先扱うであろうデータのほとんどは、標準偏差が適用できるモデルに当てはまらない
計算の結果が期待通りにならないのかがなぜか悩むのに時間をかけるより、標準偏差を使うのを諦めるほうが幸せになれるって
4.9 まとめ
平均は、多くの種類のデータセットに広く適用できることから、最も広く使われ便利な関数
中央値もデータセットによってはかなり便利
周期性は、時系列データのパターンについて表現するうまい方法
トラフィックのログを見れば、周期性を見つけられるはず
パーセンタイルはデータの大部分がどうなっているかを理解するのに便利
ただし、本来この方法は極端なデータを無視するものであることに注意
標準偏差は便利なツールだけど、この先扱うであろうデータには適用できないことが多いでしょう
データについて考える時に考慮すべき質問↓
どんな統計的手法がうまく適用できるかできないかを理解するきっかけになる。
どちらか一方に大きな偏りがあるデータか?つまりデータポイントの集まりはグラフのどちらかの端にあるだろうか?
極端な外れ値はよく発生するか?
データポイントには上限あるいは加減があるだろうか?
e.g.
レイテンシーの計測値は理論上正の方向には無限に値を取り得る
CPU 使用率のパーセンテージには上限も加減もある (0% と 100%)